package main

import "fmt"

// 本课程重点：  函数作为返回值

// 我认为 函数作为返回值的 也就是 这个整个函数返回另外一个方法的方法名而已

func add(x, y int) int {
	return x + y
}

func dec(x, y int) int {
	return x - y
}

type e func(num1, num2 int) int

// 就是根绝参数不同 返回定义好的函数的名称 方便后面运行函数
func do(o string) e {
	switch o {
	case "+":
		return add
	case "-":
		return dec
	default:
		return nil
	}

}

// 整合写法

func do2(o string) func(num1, num2 int) int {
	switch o {
	case "+":
		return add
	case "-":
		return dec
	default:
		return nil
	}

}

func main() {
	a := do("+")
	fmt.Println(a(3, 4))
	fmt.Println(do("-")(5, 2))
}
